package com.ruoyi.system.service;

import java.util.List;
import com.ruoyi.system.domain.DatingMember;
import com.ruoyi.system.domain.vo.*;

/**
 * 婚恋人员信息Service接口
 * 
 * @author ruoyi
 * @date 2024-01-15
 */
public interface IDatingMemberService 
{
    /**
     * 查询婚恋人员信息
     * 
     * @param memberId 婚恋人员信息主键
     * @return 婚恋人员信息
     */
    public DatingMember selectDatingMemberByMemberId(Long memberId);

    /**
     * 查询婚恋人员信息列表
     * 
     * @param datingMember 婚恋人员信息
     * @return 婚恋人员信息集合
     */
    public List<DatingMember> selectDatingMemberList(DatingMember datingMember);

    /**
     * 新增婚恋人员信息
     * 
     * @param datingMember 婚恋人员信息
     * @return 结果
     */
    public int insertDatingMember(DatingMember datingMember);

    /**
     * 修改婚恋人员信息
     * 
     * @param datingMember 婚恋人员信息
     * @return 结果
     */
    public int updateDatingMember(DatingMember datingMember);

    /**
     * 批量删除婚恋人员信息
     * 
     * @param memberIds 需要删除的婚恋人员信息主键集合
     * @return 结果
     */
    public int deleteDatingMemberByMemberIds(Long[] memberIds);

    /**
     * 删除婚恋人员信息信息
     * 
     * @param memberId 婚恋人员信息主键
     * @return 结果
     */
    public int deleteDatingMemberByMemberId(Long memberId);

    /**
     * 校验人员编号是否唯一
     * 
     * @param datingMember 人员信息
     * @return 结果
     */
    public boolean checkMemberNoUnique(DatingMember datingMember);

    /**
     * 校验手机号码是否唯一
     * 
     * @param datingMember 人员信息
     * @return 结果
     */
    public boolean checkPhoneUnique(DatingMember datingMember);

    /**
     * 导入人员数据
     * 
     * @param memberList 人员数据列表
     * @param isUpdateSupport 是否更新支持，如果已存在，则进行更新数据
     * @param operName 操作用户
     * @return 结果
     */
    public String importMember(List<DatingMember> memberList, Boolean isUpdateSupport, String operName);

    /**
     * 获取婚恋平台统计数据
     * 
     * @return 统计数据
     */
    public DatingStatisticsVO getStatistics();

    /**
     * 获取每日人员增长统计
     * 
     * @param days 统计天数
     * @return 增长统计数据
     */
    public DatingGrowthVO getDailyGrowth(int days);

    /**
     * 获取性别分布统计
     * 
     * @return 性别分布统计数据
     */
    public DatingGenderVO getGenderDistribution();

    /**
     * 获取年龄分布统计
     * 
     * @return 年龄分布统计数据
     */
    public DatingAgeVO getAgeDistribution();

    /**
     * 获取收入分布统计
     * 
     * @return 收入分布统计数据
     */
    public DatingIncomeVO getIncomeDistribution();
} 